// 文件碎片处理（定期）
const fse = require('fs-extra');
const path = require('path');
const schedule = require('node-schedule');
const EXPIRATION = 1000*60*60*24*1;//3;//3天

// 空目录删除
function remove(file,stats){
    const now = new Date().getTime()
    const offset = now - stats.ctimeMs 
    if(offset > EXPIRATION){
     
        console.log(file,"过期时间：",EXPIRATION,' 过期了，删除')
        fse.unlinkSync(file)
    }
}

async function scan(dir,callback){
    const files = fse.readdirSync(dir);
    files.forEach(filename=>{
        const fileDir = path.resolve(dir,filename);
        const stats = fse.statSync(fileDir);
        if(stats.isDirectory()){
            return scan(fileDir,remove);
        }
        if(callback){
            callback(fileDir,stats)
        }
    })
}
// *    *    *    *    *    *
// ┬    ┬    ┬    ┬    ┬    ┬
// │    │    │    │    │    │
// │    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
// │    │    │    │    └───── month (1 - 12)
// │    │    │    └────────── day of month (1 - 31)
// │    │    └─────────────── hour (0 - 23)
// │    └──────────────────── minute (0 - 59)
// └───────────────────────── second (0 - 59, OPTIONAL)
/*
每分钟的第30秒触发： '30 * * * * *'
每小时的1分30秒触发 ：'30 1 * * * *'
每天的凌晨1点1分30秒触发 ：'30 1 1 * * *'
每月的1日1点1分30秒触发 ：'30 1 1 1 * *'
每周1的1点1分30秒触发 ：'30 1 1 * * 1'
*/
const start = function(UPLOAD_DIR){
    //每两小时扫一次
    schedule.scheduleJob("30 1 * * * *",function(){
        console.log('开始扫描过期文件 每小时的1分30秒触发');
        scan(UPLOAD_DIR);
    })
}

exports.start = start
